<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    
    <meta http-equiv="content-language" content="zh-CN" />
    

    
    <meta name="viewport" content="width=device-width, initial-scale=0.5">
    

    
    <title>git 笔记</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/2.0.8/clipboard.min.js"></script>
    
    
    
    
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css">

    
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css">

    <link rel="stylesheet" href="/css/stylesheet.css">
    <link rel="stylesheet" href="/css/home.css">

    
    
        <style type="text/css">
        body { background-color: #fbf6ec;}
        </style>
    
    
                
        
        
            <link rel="stylesheet" href="/css/main.css"/>
        




        
        
        
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/styles/github.min.css"  />
         
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/highlight.min.js"></script>
        
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/r.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/yaml.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/latex.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/matlab.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/mathematica.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/julia.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/julia-repl.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/powershell.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/bash.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/shell.min.js"></script>
        
        <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/10.3.2/languages/python.min.js"></script>
        
        <script>hljs.initHighlightingOnLoad();</script>
     <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
          
     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css" integrity="sha512-+4zCK9k+qNFUR5X+cKL9EIR+ZOhtIloNl9GIKS57V1MyNsYpYcUrUeQc9vNfzsWfV28IaLL3i96P9sdNyeRssA==" crossorigin="anonymous" />
     
     
</head>


<body>
    <script>
        window.addEventListener("resize", resizeThrottler, false);

        var resizeTimeout;
        function resizeThrottler() {
        
        if ( !resizeTimeout ) {
            resizeTimeout = setTimeout(function() {
            resizeTimeout = null;
            actualResizeHandler();
        
            
            }, 66);
        }
        }
        actualResizeHandler()
        function actualResizeHandler() {
                if (/mobile/i.test(navigator.userAgent) || /android/i.test(navigator.userAgent))
                {
                    document.body.classList.add('mobile');
                }else{
                    document.body.classList.remove('mobile');  
                }
    }</script>

    
      
      
            <nav class="navbar navbar-default navbar-static-top" style="opacity: .9" role="navigation">
        <div class="container-fluid">
            
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">

                    <span class="sr-only">Toggle navigation</span>
                    <span class="big-icon icon-bar"></span>
                    <span class="big-icon icon-bar"></span>
                    <span class="big-icon icon-bar"></span>

                </button>
                <a class="navbar-brand" href="/">zsc</a>
            </div>

            <div class="navbar-collapse collapse" id="bs-example-navbar-collapse-1" style="height: auto;">
                <ul class="nav navbar-nav navbar-right" style="font-size: 100%">
                    
                        
                            
                            <li class=""><a href="/about/">About</a></li>
                            
                            <li class=""><a href="/categories/">Categories</a></li>
                            
                            <li class=""><a href="/">Home</a></li>
                            
                            <li class=""><a href="/tags/">Tags</a></li>
                            
                            <li class=""><a href="/issue/">存在的问题</a></li>
                            
                        
                    
                </ul>
            </div>
        </div>
    </nav>










<div class="inner">
    



    <div class="blog-post">
        
                <div>
            <h2 align="center" id = "singe-h2">
                git 笔记
                <time>
                    <br>
                    <span> 
                        <i class="fa fa-user-edit" style="color:#888;font-size: 80%;"></i>
                        zsc 
                    </span>
                    &nbsp 
                    <span>                 
                        <i class="fa fa-calendar-alt" style="color:#888;font-size: 80%;"></i>
                        2019-11-20 
                    </span>
                </time>
                
                
                <div>
                    <ul class="tags">
                        
                        <span>标签:</span>
                        <li><a class="link" href="/tags/mac"> #mac </a></li><li><a class="link" href="/tags/git"> #git </a></li>
                        
                        <span> </span>
                        
                    </ul>
                    
                </div>
            </h2>
        </div>
    
        
        <section id="content">
            <h2 id="1-git-的安装与配置">1. git 的安装与配置</h2>
<p>安装不多说,</p>
<p>初次运行 git前的配置, 配置全局信息: 用户名与邮箱,(此处的用户名与邮箱需要到 github 注册)</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git config --global user.name <span style="color:#e6db74">&#34;XXX&#34;</span>
</span></span><span style="display:flex;"><span>$ git config --global user.email <span style="color:#e6db74">&#34;email@example.com&#34;</span>
</span></span></code></pre></div><p>如果已经多次使用 git ,可以用以下命令进行查看</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git config -l   % 查看所有配置信息
</span></span><span style="display:flex;"><span>$ git config --global -l   % 查看全局配置信息
</span></span><span style="display:flex;"><span>$ cat ~/.gitconfig   % 用户的配置文件
</span></span></code></pre></div><p>注意<code>git config</code>命令的<code>--global</code>参数，用了这个参数，表示你这台机器上所有的Git仓库都会使用这个配置，当然也可以对某个仓库指定不同的用户名和Email地址。</p>
<p>一些终端基础命令</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ ls -al    <span style="color:#75715e"># 查看所有文件夹</span>
</span></span><span style="display:flex;"><span>$ pwd       <span style="color:#75715e"># 查看当前所在的目录</span>
</span></span><span style="display:flex;"><span>$ clear     <span style="color:#75715e"># 清屏(终端)</span>
</span></span></code></pre></div><h2 id="2--创建本地仓库">2 . 创建本地仓库</h2>
<p><img src="https://cdn.jsdelivr.net/gh/zscmmm/imgs2208save@master/img/git01.png" alt="git01"></p>
<h3 id="21-创建版本库--即初始化一个空仓库-这个目录下的所有路径都称作工作区">2.1 创建版本库  (即初始化一个空仓库, 这个目录下的所有路径都称作工作区)</h3>
<p>版本库又名仓库(<strong>repository</strong>)，你可以简单理解成一个目录，这个目录里面的所有文件都可以被Git管理起来，每个文件的修改、删除，Git都能跟踪，以便任何时刻都可以追踪历史，或者在将来某个时刻可以“还原”。</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git init    <span style="color:#75715e"># 该命令会在当前目录下创建了隐藏目录.git(与 git有关的信息都存储在这个文件夹里面)</span>
</span></span></code></pre></div><div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git status    <span style="color:#75715e"># 可以让我们时刻掌握仓库当前的状态, 检查当前文件状态</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">#可根据返回的字体颜色进行判断(红色代表在工作区,绿色代表在暂存区,什么都看不见证明所有修改的东西都已经提交到历史区)</span>
</span></span></code></pre></div><h3 id="22-把工作区中的文件夹提交到暂存区">2.2 把工作区中的文件(夹)提交到暂存区</h3>
<p>当本地编写文件完成后(在工作区) , 把一些文件提交到暂存区</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git add XXX     <span style="color:#75715e"># 把 XXX 单个文件或文件夹提交到暂存区</span>
</span></span><span style="display:flex;"><span>$ git add .       <span style="color:#75715e"># 把当前仓库中所有最新修改的文件都提交到暂存区</span>
</span></span><span style="display:flex;"><span>$ git add -A      <span style="color:#75715e"># 等价于 git add .</span>
</span></span></code></pre></div><h3 id="23-把暂存区提交到历史区">2.3 把暂存区提交到历史区</h3>
<p>狭义的版本库指的是历史区,广义的版本库指的是这个目录下的所有操作.</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git commit -m <span style="color:#e6db74">&#34;描述信息&#34;</span>    <span style="color:#75715e"># 是把暂存区的所有文件一次性提交到历史区</span>
</span></span></code></pre></div><h3 id="24-查看历史区的-commit-id">2.4 查看历史区的 commit id</h3>
<p>即查看你一共使用了多少次<code>git commit -m '' </code>, 每一次该命令使用都会产生一个 <code>commit id</code> .   下面的命令都可以查看提交的历史(也可以在 github 网站的code查看,前提本地仓库与远程仓库以及同步 )</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git log       <span style="color:#75715e"># 可以查看提交历史，以便确定要回退到哪个版本。 (可用于穿梭历史),</span>
</span></span><span style="display:flex;"><span>$ git reflog    <span style="color:#75715e"># 查看命令历史，以便确定要回到未来的哪个版本。 (可用于穿梭未来,包含历史的回滚),</span>
</span></span></code></pre></div><h3 id="25--退回某个commit-id-版本">2.5  退回某个commit id 版本</h3>
<p><img src="https://cdn.jsdelivr.net/gh/zscmmm/imgs2208save@master/img/git02.png" alt="git02"></p>
<p>可以用于回滚(即可以回到历史版本,也可回到未来版本(zhu)) ,</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git reset --hard ****   <span style="color:#75715e">#可以指定回到某个提交的历史版本, **** 为 commit id,id可以不写全</span>
</span></span></code></pre></div><p>从工作区提交到暂存区,从暂存区提交到历史区: 是把内容复制一份传过去的,本区域依然存在这些信息(只有这样才能对比出那些文件是否进行了修增改删)</p>
<h3 id="26-从暂存区撤销到工作区-以及从工作区撤销修改">2.6 从暂存区撤销到工作区, 以及从工作区撤销修改</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git  reset HEAD &lt;file&gt;<span style="color:#75715e"># 从暂存区中删除该文件,但是文件内容不会修改(只撤销提交这个记录,即删除 git add操作),</span>
</span></span><span style="display:flex;"><span>$ git checkout --&lt;file&gt; <span style="color:#75715e"># 把工作区的修改后文件的文件还原(撤销修改)</span>
</span></span><span style="display:flex;"><span>$ git checkout .          <span style="color:#75715e"># 放弃没有提交的修改(类似回退到最新的一次提交)</span>
</span></span></code></pre></div><h3 id="27--gitignore">2.7  .gitignore</h3>
<p>.gitignore 用于定义忽略提交的文件</p>
<ul>
<li>所有空行或者以注释符号 <code>＃</code> 开头的行都会被 Git 忽略。</li>
<li>匹配模式最后跟反斜杠（<code>/</code>）说明要忽略的是目录。</li>
<li>可以使用标准的 glob 模式匹配。</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>.idea
</span></span><span style="display:flex;"><span>/vendor       <span style="color:#75715e"># 忽略目录</span>
</span></span><span style="display:flex;"><span>*.txt
</span></span><span style="display:flex;"><span>!a.txt    <span style="color:#75715e"># *.txt 和 !a.txt 结合,表示除了a.txt以外的所有 txt 文件都被忽略</span>
</span></span></code></pre></div><h3 id="28一些其他操作">2.8一些其他操作</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git commit --amend   <span style="color:#75715e"># 修改最新一次提交的备注, </span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 如果还有新的文件要和上次提交一起, 可以先把新文件添加到暂存区,然后使用 git commit --amend  就可以把新文件添加到最新的一次提交当中</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$ git rm &lt;file&gt;          <span style="color:#75715e"># 一般情况下, 仓库中(版本库)和本地都会删除该文件</span>
</span></span><span style="display:flex;"><span>$ git rm --cached &lt;file&gt;   <span style="color:#75715e"># 删除仓库中的文件,不删除本地文件</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>$ git clean -fd    <span style="color:#75715e"># 删除没有add 的文件和目录 </span>
</span></span><span style="display:flex;"><span>$ git clean -n     <span style="color:#75715e"># 显示将要删除的文件或目录 </span>
</span></span></code></pre></div><h2 id="3-github">3. github</h2>
<h3 id="31-github-简介">3.1 github 简介</h3>
<blockquote>
<p>网站: <a href="https://www.github.com">https://www.github.com</a></p>
<p>一个开源的源代码管理平台</p>
</blockquote>
<p>setting 用户设置</p>
<ul>
<li>profile 修改自己的基本信息</li>
<li>Account 可以修改用户名</li>
<li>security  可以修改自己的密码</li>
<li>….</li>
</ul>
<h3 id="32-创建远程仓库">3.2 创建远程仓库,</h3>
<p>直接去 github 网页上点击<code>new repository--&gt; 填写信息--&gt; 创建仓库</code>创建</p>
<ul>
<li>
<p>public 公共仓库作为开源项目</p>
</li>
<li>
<p>private  私有仓库作为内部团队合作项目</p>
<ul>
<li>setting  —&gt; collaborators 设置合作开发人员</li>
<li>code 可以查看历史版本信息和分支信息</li>
</ul>
</li>
</ul>
<h3 id="33-把本地仓库信息提交到远程仓库">3.3 把本地仓库信息提交到远程仓库</h3>
<h4 id="331第一步-首先建立本地仓库与远程仓库的链接">3.3.1第一步: 首先建立本地仓库与远程仓库的链接</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-powershell" data-lang="powershell"><span style="display:flex;"><span>$ git remote -v   <span style="color:#75715e"># 查看当前仓库与那个远程仓库建立了链接,没有建立链接,则不显示</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>设置本地仓库与远程仓库建立一个链接, 链接名为 origin (可以更改,但一般都用这个)
</span></span><span style="display:flex;"><span>$ git remote add origin <span style="color:#66d9ef">[git 远程仓库地址]</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>删除管理信息
</span></span><span style="display:flex;"><span>$ git remote rm origin
</span></span></code></pre></div><h4 id="332-第二步-本地仓库提交到远程仓库">3.3.2 第二步: 本地仓库提交到远程仓库</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e">#提交之前最好先拉取--- 即把远程和本地的进行同步合并</span>
</span></span><span style="display:flex;"><span>$ git pull origin master
</span></span><span style="display:flex;"><span><span style="color:#75715e">#把本地代码提交到远程仓库(可能需要 github 的用户名和密码)</span>
</span></span><span style="display:flex;"><span>$ git push origin master <span style="color:#75715e">#将 master 分支推送到 origin 服务器</span>
</span></span><span style="display:flex;"><span>$ git push -u origin master 上面命令将本地的master分支推送到origin主机
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 加上了-u参数，Git不但会把本地的master分支内容推送的远程新的master分支，还会把本地的master分支和远程的master分支关联起来，在以后的推送或者拉取时就可以简化命令: git push，默认只推送当前分支</span>
</span></span></code></pre></div><h2 id="4-分支">4 分支</h2>
<h3 id="41-分支的功能">4.1 分支的功能</h3>
<p>分支的作用: 用于为项目增加新功能或修复Bug时使用。</p>
<p><img src="https://cdn.jsdelivr.net/gh/zscmmm/imgs2208save@master/img/git03.png" alt="git03"></p>
<p>假设当前节点处于 id03 , 一般默认处于 master 分支上, 现在要</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>创建分支:  git branch dev
</span></span><span style="display:flex;"><span>查看分支:  git branch     <span style="color:#75715e"># 分支前面有一个* 号,代表处于当前分支</span>
</span></span><span style="display:flex;"><span>切换分支:  git checkout dev
</span></span><span style="display:flex;"><span>创建并切换分支:  git checkout -b dev
</span></span><span style="display:flex;"><span>合并dev分支到 master : 
</span></span><span style="display:flex;"><span>		git checkout master  % 先切换分支,然后再合并
</span></span><span style="display:flex;"><span>		git merge dev
</span></span><span style="display:flex;"><span>删除分支:  git branch -d dev
</span></span><span style="display:flex;"><span>删除没有合并的分支: git branch -D dev
</span></span><span style="display:flex;"><span>删除远程分支:  git push origin :dev
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>查看未合并的分支<span style="color:#f92672">(</span>切换到master<span style="color:#f92672">)</span>:  git branch --no-merged
</span></span><span style="display:flex;"><span>查看已经合并的分支<span style="color:#f92672">(</span>切换到master<span style="color:#f92672">)</span> : git branch --merged
</span></span></code></pre></div><p><img src="https://cdn.jsdelivr.net/gh/zscmmm/imgs2208save@master/img/git04.png" alt="git04"></p>
<h3 id="42-合并分支可能会产生冲突">4.2 合并分支可能会产生冲突</h3>
<h4 id="421--git-分支冲突">4.2.1  git 分支冲突</h4>
<p>产生原因: 不同分支修改同一个文件或不同开发者修改同一个分支文件都可能造成冲突，造成无法提交代码。</p>
<ol>
<li>手动使用编辑器修改冲突的文件</li>
<li>添加暂存 git add . 表示已经解决冲突</li>
<li>git commit 提交完成</li>
</ol>
<p>另一种解决冲突的办法&mdash;- 强制推送</p>
<h4 id="422-git强制覆盖本地文件与git远程仓库保持一致">4.2.2. git强制覆盖本地文件（与git远程仓库保持一致）：</h4>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span><span style="color:#75715e"># 方法一: 多条命令执行</span>
</span></span><span style="display:flex;"><span>git fetch --all
</span></span><span style="display:flex;"><span>git reset --hard origin/master
</span></span><span style="display:flex;"><span>git pull
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 方法二: 单条命令执行, git强制覆盖本地命令（单条执行）：</span>
</span></span><span style="display:flex;"><span>git fetch --all <span style="color:#f92672">&amp;&amp;</span> git reset --hard origin/master <span style="color:#f92672">&amp;&amp;</span> git pull
</span></span></code></pre></div><h4 id="423-git强制推送本地代码到远程仓库">4.2.3. git强制推送本地代码到远程仓库</h4>
<p>强制用本地的代码去覆盖掉远程仓库的代码:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>git push -f origin master
</span></span><span style="display:flex;"><span>%注释： origin远程仓库名，master分支名，-f为force，意为：强行、强制。
</span></span><span style="display:flex;"><span>% 一般情况下 推送可简写为 git push. 
</span></span></code></pre></div><h3 id="43-储藏stashing">4.3 储藏（Stashing）</h3>
<p>当你正在进行项目中某一部分的工作，里面的东西处于一个比较杂乱的状态，而你想转到其他分支上进行一些工作。问题是，你不想提交进行了一半的工作，否则以后你无法回到这个工作点。</p>
<p>&ldquo;暂存&rdquo; 可以获取你工作目录的中间状态——也就是你修改过的被追踪的文件和暂存的变更——并将它保存到一个未完结变更的堆栈中，随时可以重新应用。</p>
<ol>
<li>储藏当前工作状态          <code>git stash</code></li>
<li>查看储藏列表    <code>git stash list</code></li>
<li>应用(恢复到)最近的储藏 <code>git stash apply</code></li>
<li>应用(恢复到)更早的储藏 <code>git stash apply stash@{2}</code></li>
<li>删除储藏 `git stash drop stash@{0}     其中stash@{0} 表示存储的标识.</li>
<li>应用并删除储藏 <code>git stash pop</code></li>
</ol>
<h3 id="44-tag">4.4 Tag</h3>
<p>Git 也可以对某一时间点上的版本打上标签 ，用于发布软件版本如 v1.0</p>
<ol>
<li>添加标签 <code>git tag v1.0</code></li>
<li>列出标签 <code>git tag</code></li>
<li>推送标签 <code>git push --tags</code></li>
<li>删除标签 <code>git tag -d v1.0.1</code></li>
<li>删除远程标签 <code>git push origin :v1.0.1</code></li>
</ol>
<h3 id="45-生成zip压缩包">4.5 生成zip压缩包</h3>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span>方法一: git archive --format zip --output <span style="color:#e6db74">&#34;./output.zip&#34;</span> master -0
</span></span><span style="display:flex;"><span>方法二: git archive --format zip --output dump.zip master
</span></span></code></pre></div><h3 id="46-移动分支的基础点-产生干净的合并记录---rebase">4.6 移动分支的基础点, 产生干净的合并记录 &ndash;rebase</h3>
<p><img src="https://cdn.jsdelivr.net/gh/zscmmm/imgs2208save@master/img/git05.png" alt="git05"></p>
<p><img src="https://cdn.jsdelivr.net/gh/zscmmm/imgs2208save@master/img/git06-20200525194419221.png" alt="git06"></p>
<h3 id="47-git-压缩提交记录次数">4.7 git 压缩提交记录次数</h3>
<p>发现自己提交次数有点多，想来合并以前的一些提交记录，减少提交次数，命令如下:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-shell" data-lang="shell"><span style="display:flex;"><span>git rebase -i HEAD~n  //n代表你要查看的提交记录条数
</span></span></code></pre></div><p><img src="https://cdn.jsdelivr.net/gh/zscmmm/imgs2208save@master/img/image-20200528104231661.png" alt="image-20200528104231661"></p>
<p><a href="https://blog.csdn.net/xiaowu_zhu/article/details/83345313">https://blog.csdn.net/xiaowu_zhu/article/details/83345313</a></p>
<h2 id="5-git-别名-alias">5. git 别名 alias</h2>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-bash" data-lang="bash"><span style="display:flex;"><span><span style="color:#75715e"># 方式一: 命令设置别名,  a == add .   # 即 git a  == git add .</span>
</span></span><span style="display:flex;"><span>$ git config --global alias.a add . 
</span></span><span style="display:flex;"><span>$ git config --global alias.c commit
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># 方式二: 直接修改配置文件</span>
</span></span><span style="display:flex;"><span>$ subl ~/.gitconfig   <span style="color:#75715e">#用sublime 打开git的配置文件, 注意该配置文件的地址</span>
</span></span><span style="display:flex;"><span><span style="color:#75715e"># mac 一般在~目录下, win一般也在用户目录下</span>
</span></span></code></pre></div>
        </section>
    </div>
    <br>
    
    




<span id="/md/2019-11-20-git%E7%AC%94%E8%AE%B0/" class="leancloud_visitors" data-flag-title="git 笔记">
  <span class="post-meta-item-text">文章总阅读量 </span>
  <span class="leancloud-visitors-count"><i class="leancloud-visitors-count"></i></span>次;
  <p></p>
</span>



    

    
    
    <button id="edit-button" class="icon-button" type="button" title="Fork and edit" aria-label="Fork and edit" aria-haspopup="true" aria-expanded="false" aria-controls="edit">
        <i class="fa fa-edit">编辑本文</i>
    </button>
    
    
    

    <br>
    <hr>
    <li style="float:left;list-style:none">
        
        <a class="previous" href="/md/2019-11-20-mac%E5%B8%B8%E7%94%A8%E8%BD%AF%E4%BB%B6/"> 上一篇: mac 常用软件</a>
        
    </li>
    <li style="float:right;list-style:none">
        
        <a class="next" href="/md/2019-12-11-%E8%AE%A1%E7%AE%97%E5%90%84%E7%A7%8D%E8%B7%9D%E7%A6%BBmatlab/"> 下一篇: 计算各种距离 （matlab）</a>
        
    </li>
     
    
    <script src="/js/copyCode.js"></script>
    <script src="/js/tooltips.js"></script>
    
   
    <script>
    [].slice.call(document.querySelectorAll('table')).forEach(function(el) {
        var wrapper = document.createElement('div');
        wrapper.className = 'table-area';
        el.parentNode.insertBefore(wrapper, el);
        el.parentNode.removeChild(el);
        wrapper.appendChild(el);
        $("table").wrap("<div class='table-area'></div>");
    })
    </script>

    
<br>
<hr>


<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-111691389-1"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag() { dataLayer.push(arguments); }
  gtag('js', new Date());

  gtag('config', 'UA-111691389-1');
</script>




      
      
      

       
      
      
      <script>
              document.getElementById("edit-button").addEventListener("click", function () {
                  var editWindow = window.open("https:\/\/github.com\/zoushucai\/blogmmm/edit/master/content/md\/2019-11-20-git笔记.md");
              });</script>
      
          




<script>
  function resizeIframe(obj) {
    obj.style.height = obj.contentWindow.document.body.scrollHeight + 'px';
  } 
</script>



    </style>
    <script type="text/javascript">
    function showdiv(){
        document.getElementById("divtocTableOfContents").style.display="block";
        document.getElementById("strHref").innerHTML="目录收起-";
        document.getElementById('divTableOfContents').style.width="22%";
        document.getElementById('divTableOfContents').style.height="55%";
        document.getElementById('divTableOfContents').style.top="25%";
        document.getElementById('divTableOfContents').style.bottom="5%";
        document.getElementById("strHref").href="javascript:hidediv()";
    }
    function hidediv(){
        document.getElementById("divtocTableOfContents").style.display="none";
        document.getElementById("strHref").innerHTML="目录展开+";
        document.getElementById("strHref").href="javascript:showdiv()";
        document.getElementById('divTableOfContents').style.width="10%";
        document.getElementById('divTableOfContents').style.height="5%";
    }
    </script>
</body>

</html>
</div> 







    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/contrib/mathtex-script-type.min.js" integrity="sha384-LJ2FmexL77rmGm6SIpxq7y+XA6bkLzGZEgCywzKOZG/ws4va9fUVu2neMjvc3zdv" crossorigin="anonymous"></script>

    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css">
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js"></script>
    <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/contrib/auto-render.min.js"></script>
    <script>
        document.addEventListener("DOMContentLoaded", function() {
            renderMathInElement(document.body, {
            delimiters: [
                            {left: "$$", right: "$$", display: true},
                            {left: "$", right: "$", display: false},
                            {left: "\\(", right: "\\)", display: false},
                            {left: "\\[", right: "\\]", display: true}
                        ]
            });
        });
    </script>













<br>
<div class="inner">
              
            
          
          
  
          
  
  <div id="vcomments"></div>
  
  <script src="//cdn1.lncld.net/static/js/3.0.4/av-min.js"></script>
  
  <script src='//unpkg.com/valine/dist/Valine.min.js'></script>
  <script type="text/javascript">
    new Valine({
        el: '#vcomments' ,
        appId: 'HfHPKPkLa0cBEDPcdBAHuqMv-gzGzoHsz',
        appKey: 'r5RJAasN8e0mB9sq6y9pEcX0',
        lang:'zh-CN',
        notify:  false , 
        verify:  false  ,
        avatar:'identicon', 
        placeholder: '说点什么吧...',
        visitor:  true 
    });
  </script>

</div>

<br>
<br>
<footer>
    <p style="float:right;margin-right: 5%;margin-top: 0%;">
        &copy; 2022 <a href="https://github.com/zoushucai">zsc</a>
      </p>
</footer>
<br>
<br>


